package param

import (
	"github.com/gogf/gf/frame/g"
	"github.com/gogf/gf/util/gconv"
)

// "github.com/gogf/gf/os/gcmd"
// "github.com/gogf/gf/util/gconv"

type functionArgs struct {
	// *gcmd.Parser
	args g.Map
}

func New(args g.Map) (this *functionArgs) {
	this = new(functionArgs)
	this.args = args

	return this
}

func (this *functionArgs) noNil(indexes []string) g.Map {
	inf := g.Map{}
	for _, idx := range indexes {
		if this.args[idx] != nil {
			inf[idx] = this.args[idx]
		}

	}
	return inf
}

func (this *functionArgs) GetOptInt(in ...string) int {

	inf, ok := this.args[in[0]]
	if ok {
		return gconv.Int(inf)
	}
	if len(in) == 1 {
		return 0
	}
	return gconv.Int(in[1])
}

func (this *functionArgs) GetOpt(in ...string) string {

	inf, ok := this.args[in[0]]
	if ok {
		return gconv.String(inf)
	}
	if len(in) == 1 {
		return ``
	}
	return in[1]
}

func (this *functionArgs) Isset(name string) bool {

	_, ok := this.args[name]

	return ok
}

// func (this *functionArgs) GetOptInt(name string, def int) int {

//	inf, ok := this.args[name]
//	if ok {
//		return gconv.Int(inf)
//	}

//	return def
// }

// var Parser *AdlParser

// func (this *AdlParser) GetOptInt(name string, def string) int {
// return gconv.Int(this.GetOpt(name, def))
// }

// func Init(mapStrBool g.MapStrBool) {
//	var err error
//	// a,b:=mapStrBool

//	if mapStrBool != nil {
//		Parser = new(AdlParser)
//		Parser.Parser, err = gcmd.Parse(mapStrBool)
//		// g.MapStrBool{
//		// "n,name":	true,
//		// "v,version": true,
//		// "a,arch":	true,
//		// "o,os":		true,
//		// "h,help":	  false,
//		// "logon":	  true,
//		// "a,admin":	  false,
//		// "p,password": true,
//		// "hashgitee.com/AlmondLee/gitee.com/AlmondLee/gf-tools":	  true,
//		// "j":		  true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// "p,path":	true,
//		// })

//		if err != nil {
//			panic(err)
//		}
//	}
//	// return parser
// }
